/**
 * 菜单校验模块
 */

const Joi = require('joi');
const { messages } = require('../validators/common');

/**
 * 校验添加菜单信息
 * @param {*} ctx 上下文
 * @param {*} next 下一个回调函数
 */
const validateAdd = Joi.object({
    name: Joi.string().label('菜单名称').empty().required().max(20).messages(messages),
    path: Joi.string().label('路径').empty().required().max(50).messages(messages),
    code: Joi.string().label('编码').empty().required().max(30).messages(messages),
    relation: Joi.string().label('关联菜单').optional().allow('').max(30).messages(messages),
    sort: Joi.number().label('排序').integer().min(1).required().messages(messages),
    show: Joi.boolean().label('是否显示').required().messages(messages),
    pid: Joi.number().label('父菜单').required().integer().min(0).messages(messages)
});

/**
 * 校验菜单ID
 */
const validMenuId = Joi.object({
    id: Joi.number().label('菜单ID').integer().min(1).required().messages(messages)
});

/**
 * 校验角色ID
 */
const validRoleId = Joi.object({
    id: Joi.number().label('角色ID').integer().min(1).required().messages(messages)
});

/**
 * 校验修改
 */
const validaUpdate = validateAdd.concat(validMenuId);

module.exports = {
    validateAdd,
    validMenuId,
    validRoleId,
    validaUpdate
}